//: C05:Handle.cpp {O}
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// Handle implementation
#include "Handle.h"
#include "../require.h"

// Define Handle's implementation:
struct Handle::Cheshire {
    int i;
};

void Handle::initialize()
{
    smile = new Cheshire();
    require(smile != 0);
    smile->i = 0;
}

void Handle::cleanup()
{
    delete smile;
}

int Handle::read()
{
    return smile->i;
}

void Handle::change(int x)
{
    smile->i = x;
} ///:~
